package com.vision.sales.cl.data;

import java.util.Date;

import com.google.gwt.core.client.GWT;
import com.google.gwt.editor.client.Editor.Path;
import com.sencha.gxt.core.client.ValueProvider;
import com.sencha.gxt.data.shared.LabelProvider;
import com.sencha.gxt.data.shared.ModelKeyProvider;
import com.sencha.gxt.data.shared.PropertyAccess;
import com.vision.core.cm.db.data.Company;
import com.vision.sales.cm.data.CreditMemoType;
import com.vision.sales.cm.data.TransactionStatus;
import com.vision.sales.cm.db.data.CreditMemo;
import com.vision.sales.cm.db.data.Customer;
import com.vision.sales.cm.db.data.SalesInvoice;

public interface CreditMemoProperties extends PropertyAccess<CreditMemo> {
	
	public static final CreditMemoProperties INSTANCE = GWT.create(CreditMemoProperties.class);
	
	@Path("id")
	ModelKeyProvider<CreditMemo> key();

	@Path("creditMemoNo")
	LabelProvider<CreditMemo> nameLabel();

	ValueProvider<CreditMemo, Long> id();
	
	ValueProvider<CreditMemo, Company> company();
	
	@Path("company.code")
	ValueProvider<CreditMemo, String> companyCode();
	
	ValueProvider<CreditMemo, Customer> customer();
	
	@Path("customer.code")
	ValueProvider<CreditMemo, String> customerCode();

	ValueProvider<CreditMemo, String> creditMemoNo();

	ValueProvider<CreditMemo, Date> date();

	ValueProvider<CreditMemo, CreditMemoType> type();

	ValueProvider<CreditMemo, Double> amount();

	ValueProvider<CreditMemo, SalesInvoice> salesInvoice();

	@Path("salesInvoice.invoiceNo")
	SalesInvoiceNoValueProvider<CreditMemo> salesInvoiceNo();
	
	ValueProvider<CreditMemo, String> remarks();
	
	ValueProvider<CreditMemo, TransactionStatus> status();
	
}